    package com.neuedu.it.teach.controller;

    import com.neuedu.it.teach.controller.vo.Result;
    import com.neuedu.it.teach.entity.User;
    import com.neuedu.it.teach.service.UserService;
    import io.jsonwebtoken.Jwts;
    import io.jsonwebtoken.SignatureAlgorithm;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;

    import java.math.BigDecimal;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;

    @RestController
    public class UserController {
        @Autowired
        private UserService userService;

        @RequestMapping("/login")//已测试
        public Result login(String name, String pwd) {
            // 使用service层登录验证用户名和密码
            User user = userService.login(name, pwd);

            // 如果用户为null，表示用户名或密码错误
            if (user == null) {
                return Result.badRequest("用户名或密码错误");
            } else {
                // 删除用户的密码字段，避免密码泄露
                user.setPwd(null);

                // 构建JWT凭证
                Map<String, Object> claims = new HashMap<>();
/*                claims.put("user", user);  // 将用户信息存入JWT的claims中*/
                claims.put("user_id", user.getId());
                claims.put("user_name", user.getNickName());
                claims.put("user_nickName", user.getNickName());
                // 创建JWT Token
                String jwt = Jwts.builder()
                        .setClaims(claims)  // 设置JWT的有效载荷
                        .setSubject(user.getId() + "")  // 设置JWT的主体为用户ID
                        .setIssuedAt(new Date())  // 设置JWT的签发时间
                        .setExpiration(new Date(System.currentTimeMillis() + 1 * 60 * 60 * 1000))  // 设置过期时间为1小时
                        .signWith(SignatureAlgorithm.HS256, "123456")  // 使用HS256算法和密钥加密
                        .compact();

                // 返回响应数据，包含用户信息和JWT Token
                Map<String, Object> data = new HashMap<>();
                data.put("user", user);  // 返回用户信息
                data.put("jwttoken", jwt);  // 返回JWT Token

                return Result.success(data);  // 返回成功响应
            }
        }

        @PostMapping("/reg")//已测试
        public Result reg(@RequestBody  User user){
            // 设置默认值
            if (user.getReward() == null) {
                user.setReward(BigDecimal.ZERO);  // 默认奖励值
            }
            if (user.getIsTeacher() == null) {
                user.setIsTeacher(false);         // 默认不是教师
            }
           userService.register(user);
            return Result.success("注册成功");
        }

    }
